package com.shixianjun.leetcode.剑指offer;

public class _03_数组中重复的数字 {

    /**
     * 在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。
     * 数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。
     * 请找出数组中任意一个重复的数字。
     * */
    static public int findRepeatNumber(int[] nums) {

        int index = 0;
        while (index < nums.length) {
            int value = nums[index];
            if (value == index) {
                index ++;
            } else  {
                if (nums[value] == value) {
                    return value;
                }

                int temp = value;
                nums[index] = nums[value];
                nums[value] = temp;
            }
        }

        return -1;
    }

    public static void main(String[] args) {
        System.out.println(findRepeatNumber(new int[] {2, 3, 1, 0, 2, 5, 3}));
    }
}
